#!/bin/sh

# 使用说明，用来提示输入参数
usage() {
	echo "Usage: sh 执行脚本.sh [port|base|modules|stop|rm]"
	exit 1
}

# 添加端口规则
add_port_rule() {
    local port="$1"
    sudo pfctl -E  # 启用 pf 防火墙
    echo "pass in proto tcp from any to any port $port" | sudo pfctl -a com.apple/2554b7b9-ce36-4b4f-84fc-64523b7c8f1a -f -
    sudo pfctl -f /etc/pf.conf  # 加载规则
}

# 重启 pf 防火墙
restart_firewall() {
    sudo pfctl -d  # 禁用 pf 防火墙
    sudo pfctl -F all -f /etc/pf.conf  # 清除规则
    sudo pfctl -E  # 启用 pf 防火墙
}

macPort(){
    # 添加需要开放的端口
    add_port_rule 80
    add_port_rule 8080
    add_port_rule 8848
    add_port_rule 9848
    add_port_rule 9849
    add_port_rule 6379
    add_port_rule 3306
    add_port_rule 9100
    add_port_rule 9200
    add_port_rule 9201
    add_port_rule 9202
    add_port_rule 9203
    add_port_rule 9300

    # 重启防火墙
    restart_firewall
}

# 开启所需端口
port(){
	firewall-cmd --add-port=80/tcp --permanent
	firewall-cmd --add-port=8080/tcp --permanent
	firewall-cmd --add-port=8848/tcp --permanent
	firewall-cmd --add-port=9848/tcp --permanent
	firewall-cmd --add-port=9849/tcp --permanent
	firewall-cmd --add-port=6379/tcp --permanent
	firewall-cmd --add-port=3306/tcp --permanent
	firewall-cmd --add-port=9100/tcp --permanent
	firewall-cmd --add-port=9200/tcp --permanent
	firewall-cmd --add-port=9201/tcp --permanent
	firewall-cmd --add-port=9202/tcp --permanent
	firewall-cmd --add-port=9203/tcp --permanent
	firewall-cmd --add-port=9300/tcp --permanent
	service firewalld restart
}

# 启动基础环境（必须）ruoyi-mysql ruoyi-redis ruoyi-nacos
base(){
	docker-compose up -d ruoyi-mysql ruoyi-redis ruoyi-nacos
}

# 启动程序模块（必须）
modules(){
	docker-compose up -d ruoyi-nginx ruoyi-gateway ruoyi-auth ruoyi-modules-system
}

# 关闭所有环境/模块
stop(){
	docker-compose stop
}

# 删除所有环境/模块
rm(){
	docker-compose rm
}

# 根据输入参数，选择执行对应方法，不输入则执行使用说明
case "$1" in
"macPort")
	macPort
;;
"port")
	port
;;
"base")
	base
;;
"modules")
	modules
;;
"stop")
	stop
;;
"rm")
	rm
;;
*)
	usage
;;
esac
